package mx.ipn.presentacion.reportes;

import com.trolltech.qt.gui.QCloseEvent;
import com.trolltech.qt.gui.QColor;
import com.trolltech.qt.gui.QWidget;

import mx.ipn.presentacion.ConexionConNegocios;
import mx.ipn.presentacion.Utilerias;
import mx.ipn.presentacion.VentanaInicio;
import mx.ipn.to.ReporteTO;
import mx.ipn.to.UsuarioTO;
import mx.ipn.to.FechaHoraTO;

public class ComportamientoPropiedadesReporte extends QWidget {
	Ui_PropiedadesReporte reporte = new Ui_PropiedadesReporte();
	VentanaInicio ventanaInicio = null;

	public ComportamientoPropiedadesReporte(UsuarioTO usu,VentanaInicio ventanaInicio) {
		this.ventanaInicio = ventanaInicio;
		reporte.setupUi(this);
		Utilerias.centrarVentana(this);
		reporte.comboBoxTipoReporte.setCurrentIndex(-1);
		bloqueaComponentes();
		reporte.comboBoxTipoReporte.currentIndexChanged.connect(this,
				"seleccionReporte(int)");
		reporte.pushButtonCancelar.clicked.connect(this, "botonCancelar()");
		reporte.pushButtonGenerar.clicked.connect(this, "botonGenerar()");
	}

	public void bloqueaComponentes() {
		reporte.dateEditTermino.setEnabled(false);
		reporte.dateEditInicio.setEnabled(false);

		reporte.timeEditInicio.setEnabled(false);
		reporte.timeEditTermino.setEnabled(false);

		reporte.labelDel.setVisible(false);
		reporte.labelAl.setVisible(false);
		reporte.spinBoxUnidadFin.setVisible(false);
		reporte.spinBoxUnidadInicio.setVisible(false);

		reporte.pushButtonGenerar.setEnabled(false);
	}

	public void seleccionReporte(int seleccion) {

		bloqueaComponentes();

		switch (seleccion) {
		case 0: {

		}
		case 1: {

		}
		case 2: {

		}
		case 3: {
			reporte.dateEditTermino.setEnabled(true);
			reporte.dateEditInicio.setEnabled(true);

			reporte.timeEditInicio.setEnabled(true);
			reporte.timeEditTermino.setEnabled(true);

			reporte.pushButtonGenerar.setEnabled(true);
			break;
		}
		case 4: {

			reporte.dateEditTermino.setEnabled(true);
			reporte.dateEditInicio.setEnabled(true);

			reporte.timeEditInicio.setEnabled(true);
			reporte.timeEditTermino.setEnabled(true);

			reporte.spinBoxUnidadFin.setVisible(true);
			reporte.spinBoxUnidadInicio.setVisible(true);

			reporte.pushButtonGenerar.setEnabled(true);
			break;
		}

		}
	}

	public void botonGenerar() {
		ReporteTO enviarTO = new ReporteTO();
		ReporteTO reciveTO[] = null;

		enviarTO.setTipoReporte(reporte.comboBoxTipoReporte.currentIndex());
		enviarTO.setFechaInicio(FechaHoraTO.getFechaUtil(reporte.dateEditInicio
				.text()));
		enviarTO.setFechaFin(FechaHoraTO.getFechaUtil(reporte.dateEditTermino
				.text()));
		enviarTO.setHoraInicio(FechaHoraTO.getHoraUtil(reporte.timeEditInicio
				.text()));
		enviarTO.setHoraFin(FechaHoraTO.getHoraUtil(reporte.timeEditTermino
				.text()));

		if (reporte.spinBoxUnidadFin.isVisible() == true) {
			enviarTO.setUnidadInicio(reporte.spinBoxUnidadInicio.value());
			enviarTO.setUnidadFin(reporte.spinBoxUnidadFin.value());
		}

		reciveTO = (ReporteTO[]) ConexionConNegocios.invocaServicio(
				"generarReporte", enviarTO, ReporteTO[].class);
		
		if(reciveTO!= null){
			if(reciveTO[0].getTipoError()== 0){
				for(int x=0;x<reciveTO.length;x++){
					reciveTO[x].setColor(nombreColor());
				}
				ItemviewChart genRep = new ItemviewChart(reciveTO);
				genRep.show();
			}
			else{
				Utilerias.mostrarMensajeError(this,reciveTO[0]);
			}
		}
	}

	public void botonCancelar() {
		this.close();
	}
	
	public String nombreColor() {
		QColor color = new QColor();
		int rojo = 25 * (1 + ((int) (Math.random() * 10)));
		int verde = 130 + ((int) (Math.random() * 10) * (int) (Math.random() * 12));
		int azul = 130 + (125 - (int) (Math.random() * 125));
		color.setRgb(rojo, verde, azul);
		String cadenaReg = new String(color.name()); 
		return cadenaReg;
	}
	
	protected void closeEvent(QCloseEvent e) {
		this.ventanaInicio.setEnabled(true);
	}

}
